home *** CD-ROM | disk | FTP | other *** search
- ; EMACS.RC: Standard micro Startup program
- ; for MicroEMACS 3.9
- ; (C)opyright 1987 by Daniel M Lawrence
- ; Last Update: 07/11/87
-
- set $discmd FALSE
- write-message "[Setting up....]"
-
- ; If you screen "SNOWS", uncomment this line
- ; set $flicker "TRUE"
-
- ; If you are on an IBM-PC EGA card and want to force the
- ; screen to EGA mode, uncomment the following line
- ; set $sres "EGA"
-
- ; ***** Rebind the Function key group
-
- bind-to-key search-forward FN;
- bind-to-key search-reverse FN<
- bind-to-key hunt-forward FN=
- bind-to-key hunt-backward FN>
- bind-to-key execute-macro-1 FN? ;Toggle Function key window
- bind-to-key execute-macro-2 FN@ ;Toggle Help window
- bind-to-key execute-macro-3 FNA ;Toggle smooth paging
- bind-to-key execute-macro-4 FNB ;Change editor mode
- bind-to-key save-file FNC
- bind-to-key exit-emacs FND
-
- bind-to-key execute-macro-10 FNT
- bind-to-key execute-macro-11 FNU
- bind-to-key execute-macro-12 FNV
- bind-to-key execute-macro-13 FNW
- bind-to-key execute-macro-14 FNX
- bind-to-key execute-macro-15 FNY
- bind-to-key execute-macro-16 FNZ
- bind-to-key execute-macro-17 FN[
- bind-to-key execute-macro-18 FN\
- bind-to-key execute-macro-19 FN]
-
- ; Set Default Global modes
-
- add-global-mode "blue"
-
- ; Toggle function key window display
-
- 1 store-macro
- !if %rcfkeys
- !goto rcfoff
- !endif
-
- ; toggle function key window on
- save-window
- 1 next-window
- !if &sequal $cbufname "emacs.hlp"
- delete-window
- !endif
- !if ¬ &sequal $cbufname "Function Keys"
- 1 split-current-window
- select-buffer "Function Keys"
- add-mode "red"
- !force 5 resize-window
- &add × %rcmode 5 1 goto-line
- 1 redraw-display
- !endif
- set %rcfkeys TRUE
- !force restore-window
- !if &sequal $cbufname "Function Keys"
- next-window
- !endif
- write-message "[Function key window ON]"
- !return
-
- ;Toggle the function key window off
- *rcfoff
- save-window
- 1 next-window
- !if &sequal "Function Keys" $cbufname
- delete-window
- !endif
- !force restore-window
- write-message "[Function key window OFF]"
- set %rcfkeys FALSE
- !endm
-
- ; Toggle HELP file onscreen
-
- 2 store-macro
- 1 next-window
-
- ;Make sure the function key window isn't up!
- !if &sequal $cbufname "Function Keys"
- delete-window
- !endif
-
- ;Bring up page 1
- !if ¬ &seq $cbufname "emacs.hlp"
- help
- 8 resize-window
- add-mode "red"
- beginning-of-file
- 2 forward-character
- !endif
-
- *rchelp
-
- write-message "[PgUp/PgDn] Page [FN6] EXIT ^G Exit leaving page on screen"
- update-screen
- set %rctmp >key
- !if &equ &asc %rctmp 0
- set %rctmp >key
- !if &seq %rctmp I
- beginning-of-line
- !force search-reverse "=>"
- 1 redraw-display
- !goto rchelp
- !endif
- !if &seq %rctmp Q
- beginning-of-line
- 2 forward-character
- !force search-forward "=>"
- 1 redraw-display
- !goto rchelp
- !endif
- !if &seq %rctmp "~@"
- delete-window
- !if &seq %rcfkeys TRUE
- set %rcfkeys FALSE
- execute-macro-1
- !endif
- write-message "[Help Exited]"
- !return
- !endif
- !endif
- !if &equ &asc %rctmp 7
- next-window
- set %rcfkeys FALSE
- write-message "[Help Aborted]"
- !return
- !endif
- !goto rchelp
- !endm
-
- ; toggle smooth paging mode
-
- 3 store-macro
- set $discmd FALSE
- !if %rcspage
- set %rcspage FALSE
- set %rctmp "OFF"
- bind-to-key previous-line FNH
- bind-to-key next-line FNP
- !else
- set %rcspage TRUE
- set %rctmp "ON "
- bind-to-key execute-macro-5 FNH
- bind-to-key execute-macro-6 FNP
- !endif
- set %cbuf $cbufname
- set %cline $cwline
- select-buffer "Function Keys"
- set %rcline 4
- !while &less %rcline 15
-
- %rcline goto-line
- 10 forward-character
- 3 delete-next-character
- insert-string %rctmp
- set %rcline &add %rcline 5
-
- !endwhile
-
- unmark-buffer
- select-buffer %cbuf
- %cline redraw-display
- set $discmd TRUE
- write-message &cat &cat "[Smooth Paging " %rctmp "]"
- !endm
-
- ; Change editor mode
-
- 4 store-macro
- set %rcmode &add %rcmode 1
- !if &equ %rcmode 3
- set %rcmode 0
- !endif
-
- !if %rcfkeys
- save-window
- 1 next-window
- !if &seq $cbufname "Function Keys"
- add-mode "red"
- !force 5 resize-window
- &add × %rcmode 5 1 goto-line
- 1 redraw-display
- !endif
- restore-window
- !if &sequal $cbufname "Function Keys"
- next-window
- !endif
- !endif
- !if &equ %rcmode 0
- write-message "[Program MODE]"
- !else
- !if &equ %rcmode 1
- write-message "[Wordprocessing MODE]"
- !else
- write-message "[Block MODE]"
- !endif
- !endif
- !endm
-
- 5 store-macro
- set %cc $target
- !if &equ $cwline 1
- move-window-up
- !endif
- set $target %cc
- previous-line
- !endm
-
- 6 store-macro
- set %cc $target
- !if &equ $cwline $wline
- move-window-down
- !endif
- set $target %cc
- next-line
- !endm
-
- ; Switch Shift-Function Key 1
-
- 10 store-macro
- !if &equ %rcmode 0
- run rcdvar
- !return
- !endif
- !if &equ %rcmode 1
- end-of-line
- set %rctmp $curcol
- beginning-of-line
- &div &sub $fillcol %rctmp 2 insert-space
- beginning-of-line
- !return
- !endif
- !if &equ %rcmode 2
- !if &equ %rcltype 1
- set %rcltype 2
- set %rctmp "DOUBLE"
- !else
- set %rcltype 1
- set %rctmp "SINGLE"
- !endif
- set %cbuf $cbufname
- set %cline $cwline
- select-buffer "Function Keys"
- beginning-of-file
- 11 goto-line
- 47 forward-character
- 6 delete-next-character
- insert-string %rctmp
- unmark-buffer
- select-buffer %cbuf
- %cline redraw-display
- !return
- !endif
- !endm
-
- ; Switch Shift-Function Key 2
-
- 11 store-macro
- !if &equ %rcmode 0
- run showexp
- !return
- !endif
- !if &equ %rcmode 1
- nop
- !return
- !endif
- !if &equ %rcmode 2
- set %bkcopy FALSE
- run getblock
- write-message "[Block deleted]"
- !return
- !endif
- !endm
-
- ; Switch Shift-Function Key 3
-
- 12 store-macro
- !if &equ %rcmode 0
- next-window
- !return
- !endif
- !if &equ %rcmode 1
- fill-paragraph
- !return
- !endif
- !if &equ %rcmode 2
- !if ¬ %rcbox
- run loadbox
- !endif
- run box2
- !return
- !endif
- !endm
-
- ; Switch Shift-Function Key 4
-
- 13 store-macro
- !if &equ %rcmode 0
- set $debug FALSE
- run tdebug
- !return
- !endif
- !if &equ %rcmode 1
- set %rctmp @"User dictionary(<ret> if none): "
- !if &seq %rctmp "ERROR"
- !return
- !endif
- !if ¬ &seq %rctmp ""
- set %rctmp &cat &cat "-u" %rctmp " "
- !endif
- save-file
- set %rcspell TRUE
- write-message ~n
- shell-command &cat &cat "spell " %rctmp $cfname
- execute-file "scan.cmd"
- delete-other-windows
- !if &seq %rcfkeys TRUE
- set %rcfkeys FALSE
- execute-macro-1
- !endif
- update-screen
- write-message "[Spell Check complete]"
- !return
- !endif
- !if &equ %rcmode 2
- set %bkcopy TRUE
- run getblock
- write-message "[Block copied]"
- !return
- !endif
- !endm
-
- ; Switch Shift-Function Key 5
-
- 14 store-macro
- !if &equ %rcmode 0
- execute-buffer @"Buffer to Execute: "
- !return
- !endif
- !if &equ %rcmode 1
- run refin
- !return
- !endif
- !if &equ %rcmode 2
- !if ¬ %rcbox
- run loadbox
- !endif
- !if &equ %rcltype 1
- run line1
- !else
- run line2
- !endif
- !return
- !endif
- !endm
-
- ; Switch Shift-Function Key 6
-
- 15 store-macro
- !if &equ %rcmode 0
- execute-macro
- !return
- !endif
- !if &equ %rcmode 1
- write-message "[MicroSCRIBE not ready]"
- !return
- !endif
- !if &equ %rcmode 2
- set %bkcopy TRUE
- run putblock
- !return
- !endif
- !endm
-
- ; Switch Shift-Function Key 7
-
- 16 store-macro
- !if &equ %rcmode 0
- run rcindent
- !return
- !endif
- !if &equ %rcmode 1
- run rcswap
- !return
- !endif
- !if &equ %rcmode 2
- !if ¬ %rcbox
- run loadbox
- !endif
- run blank
- !return
- !endif
- !endm
-
- ; Switch Shift-Function Key 8
-
- 17 store-macro
- !if &equ %rcmode 0
- run rcundent
- !return
- !endif
- !if &equ %rcmode 1
- write-message "[MicroSCRIBE not ready]"
- !return
- !endif
- !if &equ %rcmode 2
- set %bkcopy FALSE
- run putblock
- !return
- !endif
- !endm
-
- ; Switch Shift-Function Key 9
-
- 18 store-macro
- !if &equ %rcmode 0
- shell-command @"DOS command: "
- write-message "[Press any key to reenter MicroEMACS...]"
- set %rctmp >key
- !return
- !endif
- !if &equ %rcmode 1
- count-words
- !return
- !endif
- !if &equ %rcmode 2
- nop
- !return
- !endif
- !endm
-
- ; Switch Shift-Function Key 10
-
- 19 store-macro
- !if &equ %rcmode 0
- i-shell
- !return
- !endif
- !if &equ %rcmode 1
- write-message "[MicroSCRIBE not ready]"
- !return
- !endif
- !if &equ %rcmode 2
- nop
- !return
- !endif
- !endm
-
- ; Load up the box macros....(pretty big...)
-
- store-procedure loadbox
- execute-file "boxmac.cmd"
- set %rcbox TRUE
- !endm
-
- ; display a variable
- store-procedure rcdvar
- set %rcdebug $debug
- set $debug FALSE
- set %rctmp @&cat &cat "Variable to display[" %rcvar "]: "
- !if ¬ &seq %rctmp ""
- set %rcvar %rctmp
- !endif
- write-message &cat &cat &cat %rcvar " = [" &ind %rcvar "]"
- set $debug %rcdebug
- !endm
-
- ; Toggle debug mode
-
- store-procedure tdebug
- set %cbuf $cbufname
- set %cline $cwline
- select-buffer "Function Keys"
- beginning-of-file
- next-line
- 75 forward-character
- set %rcdebug &equ $curchar 70
- delete-previous-character
- 2 delete-next-character
- !if %rcdebug
- insert-string "ON "
- !else
- insert-string "OFF"
- !endif
- unmark-buffer
- select-buffer %cbuf
- %cline redraw-display
- write-message &cat &cat "[Debug Mode " %rcdebug "]"
- set $debug %rcdebug
- !endm
-
- ; evaluate expresion
-
- store-procedure showexp
- delete-buffer "[temp]"
- set %rcbuf $cbufname
- set %cline $cwline
- select-buffer "[temp]"
- insert-string "set %rcval "
- !force insert-string @"EXP: "
- execute-buffer "[temp]"
- unmark-buffer
- select-buffer %rcbuf
- delete-buffer "[temp]"
- %cline redraw-display
- write-message &cat &cat "Value = [" %rcval "]"
- !endm
-
- ; indent region
-
- store-procedure rcindent
- write-message "[Indenting region]"
- set %endline $curline
- set %endpos $cwline
- exchange-point-and-mark
- set $discmd FALSE
- set-mark
- set $discmd TRUE
-
- !while &gre %endline $curline
- beginning-of-line
- handle-tab
- next-line
- !endwhile
-
- beginning-of-line
- set $cwline %endpos
- write-message "[Region indented]"
- !endm
-
- ; undent region
-
- store-procedure rcundent
- write-message "[Undenting region]"
- set %endline $curline
- set %endpos $cwline
- exchange-point-and-mark
- set $discmd FALSE
- set-mark
- set $discmd TRUE
-
- !while &gre %endline $curline
- beginning-of-line
- !if &gre $lwidth 0
- delete-next-character
- !endif
- next-line
- !endwhile
-
- beginning-of-line
- set $cwline %endpos
- write-message "[Region undented]"
- !endm
-
- ; reformat indented paragraph
-
- store-procedure refin
- write-message " [Fixing paragraph]"
- set %endline $curline
- set $discmd "FALSE"
- kill-region
- 2 split-current-window
- select-buffer "[temp]"
- yank
-
- end-of-file
- set %endline $curline
- beginning-of-file
- !while &gre %endline $curline
- beginning-of-line
- !if &gre $lwidth 0
- delete-next-character
- !endif
- next-line
- !endwhile
-
- &sub $fillcol 8 set-fill-column
- 1 goto-line
- fill-paragraph
- &add $fillcol 8 set-fill-column
-
- end-of-file
- set %endline $curline
- beginning-of-file
- !while &gre %endline $curline
- beginning-of-line
- handle-tab
- next-line
- !endwhile
-
- beginning-of-file
- set-mark
- end-of-file
- kill-region
- unmark-buffer
- delete-window
- yank
- delete-buffer "[temp]"
- set $cwline %endpos
- set $discmd "TRUE"
- write-message " [Fixed paragraph]"
- !endm
-
- ; swap the word the cursor is on and it's predisesor
-
- store-procedure rcswap
- set %rctmp $search
- forward-character
- previous-word
- 0 delete-next-word
- set %second $kill
- insert-string "~~"
- !force previous-word
- !if &seq $status FALSE
- set %first %second
- !else
- 0 delete-next-word
- set %first $kill
- insert-string %second
- !endif
- search-forward "~~"
- delete-previous-character
- insert-string %first
- previous-word
- set $search %rctmp
- !endm
-
- ; delete a rectangular block of text
-
- store-procedure getblock
- ;set up needed variables
- set $discmd FALSE
- delete-buffer "[block]"
- set %rcbuf $cbufname
- set %cline $cwline
-
- ;save block boundries
- set %endpos $curcol
- set %endline $curline
- exchange-point-and-mark
- set %begpos $curcol
- set %begline $curline
- set %blwidth &sub %endpos %begpos
-
- ;detab the region
- &add &sub %endline %begline 1 detab-line
-
- ;scan through the block
- set $curline %begline
- !while &less $curline &add %endline 1
- ;grab the part of this line needed
- !force set $curcol %begpos
- set-mark
- !force set $curcol %endpos
- kill-region
-
- ;bring it back if this is just a copy
- !if %bkcopy
- yank
- !endif
-
- ;put the line in the block buffer
- select-buffer "[block]"
- yank
-
- ;and pad it if needed
- !if &less $curcol %blwidth
- &sub %blwidth $curcol insert-space
- end-of-line
- !endif
- forward-character
-
- ;onward...
- select-buffer %rcbuf
- next-line
- !endwhile
-
- ;unmark the block
- select-buffer "[block]"
- unmark-buffer
- select-buffer %rcbuf
- previous-line
- %cline redraw-display
- set $discmd TRUE
- !endm
-
- ; insert/overlay a rectangular block of text
-
- store-procedure putblock
- ;set up needed variables
- set $discmd FALSE
- set %rcbuf $cbufname
- set %cline $cwline
-
- ;save block boundries
- set %begpos $curcol
- set %begline $curline
-
- ;scan through the block
- select-buffer "[block]"
- beginning-of-file
- set %endpos &add %begpos $lwidth
- !while ¬ &equ $lwidth 0
-
- ;pad the destination if it is needed
- select-buffer %rcbuf
- beginning-of-line
- !if ¬ &equ $lwidth 0
- detab-line
- previous-line
- !endif
- !force set $curcol %begpos
- !if &less $curcol %begpos
- &sub %begpos $curcol insert-space
- end-of-line
- !endif
-
- ;delete some stuff if this should overlay
- !if %bkcopy
- set-mark
- !force set $curcol %endpos
- kill-region
- !endif
-
- ;grab the line from the block buffer
- select-buffer "[block]"
- beginning-of-line
- set-mark
- end-of-line
- copy-region
- forward-character
-
- ;put the line in the destination position
- select-buffer %rcbuf
- yank
- next-line
-
- ;onward...
- select-buffer "[block]"
- !endwhile
-
- select-buffer %rcbuf
- set $curline %begline
- set $curcol %begpos
- %cline redraw-display
- set $discmd TRUE
- !endm
-
- ; Set up auto CMODE
-
- 20 store-macro
- set %rctmp &sin $cfname "."
- !if &equ %rctmp 0
- !return
- !endif
- set %rctmp &mid $cfname &add %rctmp 1 5
- !if &or &seq %rctmp "c" &seq %rctmp "h"
- add-mode "cmode"
- !endif
- !endm
- bind-to-key execute-macro-20 M-FNR
-
- ; bring up the function key window
-
- 1 split-current-window
- select-buffer "Function Keys"
- insert-string "f1 search->> f2 <<-search █ F1 display variable F2 eval expression~n"
- insert-string "f3 hunt->> f4 <<-hunt █ F3 next window F4 Debug mode [OFF]~n"
- insert-string "f5 Fkeys [ON ] f6 Help [OFF] █ F5 execute buffer F6 execute macro~n"
- insert-string "f7 Spage [OFF] f8 Mode [PROG ] █ F7 indent region F8 undent region~n"
- insert-string "f9 save file f10 exit emacs █ F9 execute DOS command F10 shell to DOS~n"
- insert-string "f1 search->> f2 <<-search █ F1 center line~n"
- insert-string "f3 hunt->> f4 <<-hunt █ F3 reformat paragraph F4 spell check file~n"
- insert-string "f5 Fkeys [ON ] f6 Help [OFF] █ F5 ref indented paragraph F6 PREVIEW output~n"
- insert-string "f7 Spage [OFF] f8 Mode [WORD ] █ F7 toggle words F8 output DRAFT~n"
- insert-string "f9 save file f10 exit emacs █ F9 count words F10 output FINAL~n"
- insert-string "f1 search->> f2 <<-search █ F1 Line type [DOUBLE] F2 kill block~n"
- insert-string "f3 hunt->> f4 <<-hunt █ F3 draw box F4 copy block~n"
- insert-string "f5 Fkeys [ON ] f6 Help [OFF] █ F5 insert line F6 yank block~n"
- insert-string "f7 Spage [OFF] f8 Mode [BLOCK] █ F7 insert space F8 insert block~n"
- insert-string "f9 save file f10 exit emacs █ ~n"
- unmark-buffer
- delete-window
-
- ; Initialize things.....
-
- set %rcbox FALSE
- set %rcmode 0
- set %rcfkeys FALSE
- set %rcvar ""
- set %rcltype 2
- execute-macro-1
- set $discmd TRUE